/**
 * 环境配置统一入口
 * 根据构建环境自动选择对应的配置文件
 */

import devConfig from './env.dev'
import proConfig from './env.pro'

// 根据环境变量或构建模式选择配置
const isDevelopment = (import.meta as any).env?.DEV || process.env.NODE_ENV === 'development'
const isProduction = (import.meta as any).env?.PROD || process.env.NODE_ENV === 'production'

/**
 * 当前环境配置
 */
export const ENV_CONFIG = (() => {
  if (isDevelopment) {
    return devConfig
  } else if (isProduction) {
    return proConfig
  } else {
    // 默认使用开发环境配置
    return devConfig
  }
})()

/**
 * 环境类型
 */
export type EnvType = 'development' | 'production'

/**
 * 配置接口定义
 */
export interface AppConfig {
  API_BASE_URL: string
  NODE_ENV: EnvType
  DEBUG: boolean
  REQUEST_TIMEOUT: number
  ENABLE_MOCK: boolean
  APP_NAME: string
  VERSION: string
}

/**
 * 获取当前环境类型
 */
export const getEnvType = (): EnvType => {
  return ENV_CONFIG.NODE_ENV as EnvType
}

/**
 * 是否为开发环境
 */
export const isDev = (): boolean => {
  return getEnvType() === 'development'
}

/**
 * 是否为生产环境
 */
export const isProd = (): boolean => {
  return getEnvType() === 'production'
}

/**
 * 获取 API 基础地址
 */
export const getApiBaseUrl = (): string => {
  return ENV_CONFIG.API_BASE_URL
}

/**
 * 获取请求超时时间
 */
export const getRequestTimeout = (): number => {
  return ENV_CONFIG.REQUEST_TIMEOUT
}

/**
 * 打印当前环境信息（仅开发环境）
 */
if (isDev()) {
  console.log(`🚀 [${ENV_CONFIG.APP_NAME}] 当前环境: ${getEnvType()}`)
  console.log(`🌐 API 基础地址: ${getApiBaseUrl()}`)
  console.log(`⏱️  请求超时: ${getRequestTimeout()}ms`)
}

export default ENV_CONFIG